import React, { useEffect } from 'react'
import Taro, { useDidShow, useDidHide } from '@tarojs/taro'

import './app.scss'

function App (props) {
  // 可以使用所有的 React Hooks
  useEffect(() => {
    console.log('app.js -> useEffect')
  }, [])

  // 对应 onShow
  useDidShow(() => {
    updateApp()
    console.log('app.js -> useDisShow')
  })

  // 对应 onHide
  useDidHide(() => {
    console.log('app.js -> useDisHide')
  })

  // 检测版本更新
  const updateApp = () => {
    if (process.env.TARO_ENV !== 'weapp') return
    if (Taro.canIUse('getUpdateManager')) {
      const updateManager = Taro.getUpdateManager()
      updateManager.onCheckForUpdate(function (checkRes) {
        console.log('版本更新', checkRes)
        if (checkRes.hasUpdate) { // 请求完新版本信息的回调
          updateManager.onUpdateReady(function () {
            Taro.showModal({
              title: '更新提示',
              content: '新版本已经准备好，是否重启应用？',
              success: function (res) {
                console.log('onUpdateReady', res)
                if (res.confirm) { // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
                  updateManager.applyUpdate()
                }
              }
            })
          })
          updateManager.onUpdateFailed(function () {
            Taro.showModal({ // 新的版本下载失败
              title: '已经有新版本了哟~',
              content: '新版本已经上线啦~，请您删除当前小程序，重新搜索打开哟~'
            })
          })
        }
      })
    } else {
      Taro.showModal({ // 如果希望用户在最新版本的客户端上体验您的小程序，可以这样子提示
        title: '提示',
        content: '当前微信版本过低，无法使用该功能，请升级到最新微信版本后重试。'
      })
    }
  }

  return props.children
}

export default App
